#ifndef __DIR_FUNC__
#define __DIR_FUNC__

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <ctype.h>
#include <stdbool.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#include <fcntl.h>
#include <sys/types.h>
#include <pwd.h>
#include <grp.h>
#include <sys/mman.h>
#include <sys/select.h>
#include <sys/time.h>
#include <sys/wait.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <signal.h>
#include <pthread.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>


typedef struct Node{                                                                                                              
    struct Node *next_node;
     char data[50];
 }Node_t;

typedef struct Link_list{
    struct Node *head;
    struct Node *tail;
    int length;
}Link_list_t;

int init_list(Link_list_t *catalog);
int add_catalog(Link_list_t *catalog,char *buf);
int delete_catalog(Link_list_t *catalog);
int printf_Linklist(Link_list_t *catalog);


int cd(char *dirName,Link_list_t *list);
int createDir(char *dir);
int ls(char *file);
int deleteDir(char *dir);
int pwd(Link_list_t *list,int user);

// 检查返回值是否是错误标记,若是则打印msg和错误信息
#define ERROR_CHECK(ret, error_flag, msg) \
    do { \
        if ((ret) == (error_flag)) { \
            perror(msg); \
            exit(1); \
        } \
    } while (0)

#endif
